/**
 * iso对象显示类的基类
 *              y坐标
 *                | 
 *                | 
 *                |原点
 *       |                 |
 *  |                             |
 *  z坐标                      x坐标
 * @author zzhanglin
 * @param size 网格大小
 * @param xSpan x轴占用的格子数
 * @param zSpan y轴占用的格子数
 */
IsoObject = function(size , xSpan, zSpan )
{
	Sprite.call( this );
	this.className = "IsoObject";
	
	this.isSort = false ; //用于深度排序使用
	this._position3D = new Vector3D(); //像素坐标Vector3D
	this._size = size||30; //格子大小
	this._xSpan =xSpan||1  ; //X方向占用的格子数
	this._zSpan =zSpane||1; //Z方向占用的格子数
	this._nodeX ; //格子坐标(地图单元格坐标)
	this._nodeZ ; //格子坐标(地图单元格坐标)
	this._spanPositions ; //占用了哪几个格子
	this._isRotate=false ; //是否旋转
	this._boundRect = new Rectangle();
};
FLASH.extend( IsoObject , Sprite ) ;
IsoObject.Y_CORRECT = Math.cos(-Math.PI / 6) * Math.SQRT2; //常量

/**
 * 更新在场景中的位置
 */
IsoObject.prototype._updateScreenPosition = function()
{
	var screenPos = IsoUtils.isoToScreen(_position3D);
	this._x = screenPos.x;
	this._y = screenPos.y;
	this._updateSpanPosition();
};

/**
 * 更新占用的格子
 */
IsoObject.prototype._updateSpanPosition = function()
{
	this._spanPositions = [];
	var pos; //Vector3D
	var i = 0 ;
	var j= 0;
	if(_isRotate)
	{
		for( i = 0 ;  i<_zSpan ; ++i)
		{
			for( j = 0 ; j<_xSpan ; ++j)
			{
				pos = new Vector3D( i*_size+this._x , this._y , j*this._size );
				this._spanPosition.push( pos );
			}
		}
	}
	else
	{
		for( i = 0 ;  i<_xSpan ; ++i)
		{
			for( j = 0 ; j<_zSpan ; ++j)
			{
				pos = new Vector3D( i*this._size+this._x , this._y , j*this._size );
				this._spanPosition.push( pos );
			}
		}
	}
};
